home *** CD-ROM | disk | FTP | other *** search
/ Scene 96 / Scene 96 International Edition (Zyklop Software) (Disc 2) (1997).iso / misc / coding / one_scrs / asm / m2.asm < prev    next >
Encoding:
Assembly Source File  |  1996-07-12  |  15.8 KB  |  369 lines

  1.     .386p
  2.     .model flat, c
  3.     locals
  4. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  5. ; EQUATES
  6. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  7.                 .code
  8.                 extrn pic2:dword
  9.                 extrn pic1:dword
  10.                 public ory1,orx1
  11.  
  12.  
  13. Frames          = 10
  14. FramesNum       = 1                    ; Fazisok szama
  15. PageDist        = DeltaDist*FramesNum   ; Lapok tavolsaga
  16. DefDist         = PageDist*5            ; A legnagyobb tavolsag
  17. DeltaDist       = 55                    ; A kozeledes sebessege
  18. PageRot         = 16                    ; Lapok elforgatasa
  19. DeltaRot        = 2                     ; Forgasi sebesseg
  20. orx1            dw      32768
  21. SzinMelyseg     db      0
  22.  
  23. Random          macro
  24.                 mov esi, 00046ch
  25.                 add ax, [esi]
  26.                 add ax, [RandSeed]
  27.                 add ax, [esi]
  28.                 mov [RandSeed], ax
  29. endm
  30.  
  31. inp             macro port
  32.                 mov dx, port
  33.                 in al, dx
  34. endm
  35.  
  36. outp            macro port, value
  37.                 mov dx, port
  38.                 mov al, value
  39.                 out dx, al
  40. endm
  41.  
  42. outpw           macro port, value
  43.                 mov dx, port
  44.                 mov ax, value
  45.                 out dx, ax
  46. endm
  47.  
  48. SXL_DX_1        macro
  49.                 db 0c1h
  50.                 db 0e2h
  51.                 db 001h
  52. endm
  53.  
  54. ;«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»
  55. ; DATA
  56. ;«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»
  57. DDX1            dw 0
  58. DDY1            dw 0
  59. DDX2            dw 0
  60. DDY2            dw 0
  61. I               dw ?
  62. J               dw ?
  63. Rot5            db ?                    ; Aktualis szog
  64. Rot4            db ?                    ; Aktualis szog
  65. Rot3            db ?                    ; A Rotx byte-oknak lenyeges a sor-
  66. Rot2            db ?                    ; rendje, mert dword-kent is vannak
  67. Rot1            db ?                    ; egyutt kezelve!
  68. Dist1           dw ?                    ; Aktualis tavolsag
  69. Dist2           dw ?                    ;
  70. Dist3           dw ?                    ;
  71. Dist4           dw ?                    ;
  72. Dist5           dw ?                    ;
  73. FramesCount     dw 0                    ; A fazisok szama
  74. ory1            dw 32768                ; Lasd a neveben!
  75. RandSeed        dw 091ch
  76. Filler          db 000h                 ; A hatter szine, ilyennel nem rajzol
  77.                                         ; illetve, ezzel tolti fel a hianyzo
  78.                                         ; reszt
  79. ;≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
  80. ; CODE
  81. ;≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
  82. MakeMath        macro szog, tavolsag
  83.                 ; ddx1 := (CosTable[rot]*dist) div 256;
  84.                 ; ddy1 := (SinTable[rot]*dist) div 256;
  85.                 ; ddx2 := (Cos2Table[rot]*dist) div 256;
  86.                 ; ddy2 := (Sin2Table[rot]*dist) div 256;
  87.                 ; i := x-ddx1*160-ddx2*50; j := y-ddy1*160-ddy2*50;
  88.                 mov cx, orx1
  89.                 mov di, [ory1]
  90.                 xor ebx, ebx
  91.                 mov bl, szog            ; rot -> bx
  92.                 mov ax, word ptr Cosinus1[ebx*2]      ; cos1(rot) -> ax
  93. ;mov tavolsag,ax
  94.                 imul tavolsag           ; cos1(rot)*scale
  95.                 shld dx, ax, 8
  96.                 mov [DDX1], dx          ; cos1(rot)*scale/256 -> ddx1
  97.                 sal dx, 4
  98.                 sub cx, dx              ; i = i-32*ddx1
  99.                 sal dx, 2
  100.                 sub cx, dx              ; i = i-128*ddx1
  101.                 mov ax, word ptr Sinus1[ebx*2]      ; sin1(rot) -> ax
  102. ;imul ax
  103. ;mov I,ax
  104.                 imul tavolsag           ; sin1(rot)*scale
  105.                 shld dx, ax, 8
  106.                 mov [DDY1], dx          ; sin1(rot)*scale/256 -> ddy1
  107.                 sal dx, 4               ; i = i-32*ddy1
  108.                 sub di, dx
  109.                 sal dx, 2               ; i = i-128*ddy1
  110.                 sub di, dx
  111.                 mov ax, word ptr Cosinus2[ebx*2]      ; cos2(rot) -> ax
  112.                 imul tavolsag           ; cos2(rot)*scale
  113.                 shld dx, ax, 8
  114.                 mov [DDX2], dx          ; cos2(rot)*scale/256 -> ddx2
  115.                 SXL_DX_1
  116.                 sub cx, dx              ; i = i-4*ddx2
  117.                 sal dx, 3
  118.                 sub cx, dx              ; i = i-32*ddx2
  119.                 SXL_DX_1
  120.                 sub cx, dx              ; i = i-64*ddx2
  121.                 mov ax, word ptr Sinus2[ebx*2]      ; sin2(rot) -> ax
  122.                 imul tavolsag           ; sin2(rot)*scale
  123. ;                imul ax
  124.                 shld dx, ax, 8
  125.                 mov [DDY2], dx          ; sin2(rot)*scale/256 -> ddy2
  126. ;                SXL_DX_1
  127.                 sub di, dx              ; j = j-4*ddx2
  128.                 sal dx, 3
  129.                 sub di, dx              ; j = j-32*ddx2
  130.                 SXL_DX_1
  131.                 sub di, dx              ; j = j-64*ddx2
  132.  
  133.                 mov [I], cx
  134.                 mov [J], di
  135. endm
  136.  
  137. MakePic         macro
  138.                 local @@VLoop, @@HLoop, @@Kitolto, @@Kell, @@nemgonosz
  139.                 mov edi, pic2
  140.                 mov si, [I]
  141.                 mov ebp, 100
  142.                 xor ebx, ebx
  143.          @@VLoop:
  144.                 mov ax, si
  145.                 mov dx, [J]
  146.                 mov cx, 160
  147.          @@HLoop:
  148.                 add ax, [DDX1]
  149.                 add dx, [DDY1]
  150.                 mov bl, ah
  151.                 mov bh, dh
  152.  
  153.                 push ebp
  154.                 mov ebp,pic1
  155.                 mov bl, [byte ptr ebp+ebx]
  156.                 pop ebp
  157. IF Kell? EQ 1
  158.                 cmp bl, [Filler]
  159.                 je @@Kitolto
  160. ENDIF
  161.                 cmp bl,SzinMelyseg
  162.                 jae @@nemgonosz
  163.                 mov bl,SzinMelyseg
  164. @@nemgonosz:
  165.                 sub bl,SzinMelyseg
  166.                 mov bh,bl
  167.                 mov [edi], bx
  168.                 mov [edi+320], bx
  169. @@Kitolto:
  170.                 inc edi
  171.                 inc edi
  172.                 dec cx
  173.                 jnz @@HLoop
  174.                 mov dx, [DDY2]
  175.                 add si, [DDX2]
  176.                 add edi, 320
  177.                 add [J], dx
  178.                 dec ebp
  179.                 jnz @@VLoop             ; Eddig
  180. endm               
  181.                 public Effect2Init
  182. Effect2Init:
  183.                 pushad
  184.                 mov [Rot1], 0*PageRot
  185.                 mov [Dist1], DefDist-0*PageDist
  186.                 mov [Rot2], 1*PageRot
  187.                 mov [Dist2], DefDist-1*PageDist
  188.                 mov [Rot3], 2*PageRot
  189.                 mov [Dist3], DefDist-2*PageDist
  190.                 mov [Rot4], 3*PageRot
  191.                 mov [Dist4], DefDist-3*PageDist
  192.                 mov [Rot5], 4*PageRot
  193.                 mov [Dist5], DefDist-4*PageDist
  194.                 mov [FramesCount], FramesNum
  195.                 popad
  196.                 ret
  197.  
  198.                 public Effect2
  199. Effect2:
  200.                 pushad
  201. Kell? = 0
  202.                 mov     SzinMelyseg,35
  203.                 MakeMath [Rot1], [Dist1]
  204.                 MakePic
  205.                 add [Rot1], DeltaRot
  206.                 sub [Dist1], DeltaDist
  207.                 add [Rot2], DeltaRot
  208.                 sub [Dist2], DeltaDist
  209.                 add [Rot3], DeltaRot
  210.                 sub [Dist3], DeltaDist
  211.                 add [Rot4], DeltaRot
  212.                 sub [Dist4], DeltaDist
  213.                 add [Rot5], DeltaRot
  214.                 sub [Dist5], DeltaDist
  215.                 dec [FramesCount]
  216.                 jnz @@NonDefault
  217.                 ror [dword ptr Rot5], 8 ; Rot-ok csereje
  218.                 mov al, [Rot1]
  219.                 mov [Rot2], al
  220.                 ;Random
  221.                 ;mov [Rot1], al
  222.                 add [Rot1],16
  223.                 mov [Dist1], DefDist-0*PageDist
  224.                 mov [Dist2], DefDist-1*PageDist
  225.                 mov [Dist3], DefDist-2*PageDist
  226.                 mov [Dist4], DefDist-3*PageDist
  227.                 mov [Dist5], DefDist-4*PageDist
  228.                 mov [FramesCount], FramesNum
  229.         @@NonDefault:
  230.                 popad
  231.                 ret
  232. Sinus1:
  233.                 dw 0, 6, 13, 19, 25, 31, 38, 44, 50
  234.                 dw 56, 62, 68, 74, 80, 86, 92, 98
  235.                 dw 104, 109, 115, 121, 126, 132, 137, 142
  236.                 dw 147, 152, 157, 162, 167, 172, 177, 181
  237.                 dw 185, 190, 194, 198, 202, 206, 209, 213
  238.                 dw 216, 220, 223, 226, 229, 231, 234, 237
  239.                 dw 239, 241, 243, 245, 247, 248, 250, 251
  240.                 dw 252, 253, 254, 255, 255, 256, 256, 256
  241.                 dw 256, 256, 255, 255, 254, 253, 252, 251
  242.                 dw 250, 248, 247, 245, 243, 241, 239, 237
  243.                 dw 234, 231, 229, 226, 223, 220, 216, 213
  244.                 dw 209, 206, 202, 198, 194, 190, 185, 181
  245.                 dw 177, 172, 167, 162, 157, 152, 147, 142
  246.                 dw 137, 132, 126, 121, 115, 109, 104, 98
  247.                 dw 92, 86, 80, 74, 68, 62, 56, 50
  248.                 dw 44, 38, 31, 25, 19, 13, 6, 0
  249.                 dw -6, -13, -19, -25, -31, -38, -44, -50
  250.                 dw -56, -62, -68, -74, -80, -86, -92, -98
  251.                 dw -104, -109, -115, -121, -126, -132, -137, -142
  252.                 dw -147, -152, -157, -162, -167, -172, -177, -181
  253.                 dw -185, -190, -194, -198, -202, -206, -209, -213
  254.                 dw -216, -220, -223, -226, -229, -231, -234, -237
  255.                 dw -239, -241, -243, -245, -247, -248, -250, -251
  256.                 dw -252, -253, -254, -255, -255, -256, -256, -256
  257.                 dw -256, -256, -255, -255, -254, -253, -252, -251
  258.                 dw -250, -248, -247, -245, -243, -241, -239, -237
  259.                 dw -234, -231, -229, -226, -223, -220, -216, -213
  260.                 dw -209, -206, -202, -198, -194, -190, -185, -181
  261.                 dw -177, -172, -167, -162, -157, -152, -147, -142
  262.                 dw -137, -132, -126, -121, -115, -109, -104, -98
  263.                 dw -92, -86, -80, -74, -68, -62, -56, -50
  264.                 dw -44, -38, -31, -25, -19, -13, -6
  265.  
  266. Cosinus1:
  267.                 dw 256, 256, 256, 255, 255, 254, 253, 252, 251
  268.                 dw 250, 248, 247, 245, 243, 241, 239, 237
  269.                 dw 234, 231, 229, 226, 223, 220, 216, 213
  270.                 dw 209, 206, 202, 198, 194, 190, 185, 181
  271.                 dw 177, 172, 167, 162, 157, 152, 147, 142
  272.                 dw 137, 132, 126, 121, 115, 109, 104, 98
  273.                 dw 92, 86, 80, 74, 68, 62, 56, 50
  274.                 dw 44, 38, 31, 25, 19, 13, 6, 0
  275.                 dw -6, -13, -19, -25, -31, -38, -44, -50
  276.                 dw -56, -62, -68, -74, -80, -86, -92, -98
  277.                 dw -104, -109, -115, -121, -126, -132, -137, -142
  278.                 dw -147, -152, -157, -162, -167, -172, -177, -181
  279.                 dw -185, -190, -194, -198, -202, -206, -209, -213
  280.                 dw -216, -220, -223, -226, -229, -231, -234, -237
  281.                 dw -239, -241, -243, -245, -247, -248, -250, -251
  282.                 dw -252, -253, -254, -255, -255, -256, -256, -256
  283.                 dw -256, -256, -255, -255, -254, -253, -252, -251
  284.                 dw -250, -248, -247, -245, -243, -241, -239, -237
  285.                 dw -234, -231, -229, -226, -223, -220, -216, -213
  286.                 dw -209, -206, -202, -198, -194, -190, -185, -181
  287.                 dw -177, -172, -167, -162, -157, -152, -147, -142
  288.                 dw -137, -132, -126, -121, -115, -109, -104, -98
  289.                 dw -92, -86, -80, -74, -68, -62, -56, -50
  290.                 dw -44, -38, -31, -25, -19, -13, -6, 0
  291.                 dw 6, 13, 19, 25, 31, 38, 44, 50
  292.                 dw 56, 62, 68, 74, 80, 86, 92, 98
  293.                 dw 104, 109, 115, 121, 126, 132, 137, 142
  294.                 dw 147, 152, 157, 162, 167, 172, 177, 181
  295.                 dw 185, 190, 194, 198, 202, 206, 209, 213
  296.                 dw 216, 220, 223, 226, 229, 231, 234, 237
  297.                 dw 239, 241, 243, 245, 247, 248, 250, 251
  298.                 dw 252, 253, 254, 255, 255, 256, 256
  299.  
  300. Sinus2:
  301.                 dw 307, 307, 307, 306, 306, 305, 304, 303, 301
  302.                 dw 300, 298, 296, 294, 292, 289, 287, 284
  303.                 dw 281, 278, 274, 271, 267, 263, 260, 255
  304.                 dw 251, 247, 242, 237, 233, 228, 222, 217
  305.                 dw 212, 206, 201, 195, 189, 183, 177, 171
  306.                 dw 164, 158, 151, 145, 138, 131, 124, 118
  307.                 dw 111, 103, 96, 89, 82, 75, 67, 60
  308.                 dw 53, 45, 38, 30, 23, 15, 8, 0
  309.                 dw -8, -15, -23, -30, -38, -45, -53, -60
  310.                 dw -67, -75, -82, -89, -96, -103, -111, -118
  311.                 dw -124, -131, -138, -145, -151, -158, -164, -171
  312.                 dw -177, -183, -189, -195, -201, -206, -212, -217
  313.                 dw -222, -228, -233, -237, -242, -247, -251, -255
  314.                 dw -260, -263, -267, -271, -274, -278, -281, -284
  315.                 dw -287, -289, -292, -294, -296, -298, -300, -301
  316.                 dw -303, -304, -305, -306, -306, -307, -307, -307
  317.                 dw -307, -307, -306, -306, -305, -304, -303, -301
  318.                 dw -300, -298, -296, -294, -292, -289, -287, -284
  319.                 dw -281, -278, -274, -271, -267, -263, -260, -255
  320.                 dw -251, -247, -242, -237, -233, -228, -222, -217
  321.                 dw -212, -206, -201, -195, -189, -183, -177, -171
  322.                 dw -164, -158, -151, -145, -138, -131, -124, -118
  323.                 dw -111, -103, -96, -89, -82, -75, -67, -60
  324.                 dw -53, -45, -38, -30, -23, -15, -8, 0
  325.                 dw 8, 15, 23, 30, 38, 45, 53, 60
  326.                 dw 67, 75, 82, 89, 96, 103, 111, 118
  327.                 dw 124, 131, 138, 145, 151, 158, 164, 171
  328.                 dw 177, 183, 189, 195, 201, 206, 212, 217
  329.                 dw 222, 228, 233, 237, 242, 247, 251, 255
  330.                 dw 260, 263, 267, 271, 274, 278, 281, 284
  331.                 dw 287, 289, 292, 294, 296, 298, 300, 301
  332.                 dw 303, 304, 305, 306, 306, 307, 307
  333.  
  334. Cosinus2:
  335.                 dw 0, -8, -15, -23, -30, -38, -45, -53, -60
  336.                 dw -67, -75, -82, -89, -96, -103, -111, -118
  337.                 dw -124, -131, -138, -145, -151, -158, -164, -171
  338.                 dw -177, -183, -189, -195, -201, -206, -212, -217
  339.                 dw -222, -228, -233, -237, -242, -247, -251, -255
  340.                 dw -260, -263, -267, -271, -274, -278, -281, -284
  341.                 dw -287, -289, -292, -294, -296, -298, -300, -301
  342.                 dw -303, -304, -305, -306, -306, -307, -307, -307
  343.                 dw -307, -307, -306, -306, -305, -304, -303, -301
  344.                 dw -300, -298, -296, -294, -292, -289, -287, -284
  345.                 dw -281, -278, -274, -271, -267, -263, -260, -255
  346.                 dw -251, -247, -242, -237, -233, -228, -222, -217
  347.                 dw -212, -206, -201, -195, -189, -183, -177, -171
  348.                 dw -164, -158, -151, -145, -138, -131, -124, -118
  349.                 dw -111, -103, -96, -89, -82, -75, -67, -60
  350.                 dw -53, -45, -38, -30, -23, -15, -8, 0
  351.                 dw 8, 15, 23, 30, 38, 45, 53, 60
  352.                 dw 67, 75, 82, 89, 96, 103, 111, 118
  353.                 dw 124, 131, 138, 145, 151, 158, 164, 171
  354.                 dw 177, 183, 189, 195, 201, 206, 212, 217
  355.                 dw 222, 228, 233, 237, 242, 247, 251, 255
  356.                 dw 260, 263, 267, 271, 274, 278, 281, 284
  357.                 dw 287, 289, 292, 294, 296, 298, 300, 301
  358.                 dw 303, 304, 305, 306, 306, 307, 307, 307
  359.                 dw 307, 307, 306, 306, 305, 304, 303, 301
  360.                 dw 300, 298, 296, 294, 292, 289, 287, 284
  361.                 dw 281, 278, 274, 271, 267, 263, 260, 255
  362.                 dw 251, 247, 242, 237, 233, 228, 222, 217
  363.                 dw 212, 206, 201, 195, 189, 183, 177, 171
  364.                 dw 164, 158, 151, 145, 138, 131, 124, 118
  365.                 dw 111, 103, 96, 89, 82, 75, 67, 60
  366.                 dw 53, 45, 38, 30, 23, 15, 8
  367.  
  368.                 end
  369.